﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Database;

namespace Business
{
    public class QuanLyHocVien_LopHoc
    {
        TrungTamEntities trungtam = new TrungTamEntities();
        public QuanLyHocVien_LopHoc()
        {

        }
        public double? TinhHocPhiHocVienTheoMa(String mahv)
        {
            var list = (from p in trungtam.HocVien_LopHoc
                       where p.MaHV.Equals(mahv) && p.DongHocPhi == false
                       select p);
            return list.Sum(p=>p.LopHoc.HocPhi);
        }
        public List<HocVien_LopHoc> LayDanhSachLopHocVienTheoHoc(String MaHV)
        {
            var list = (from p in trungtam.HocVien_LopHoc
                        where p.MaHV.Equals(MaHV)
                       select p);
            return list.ToList();
        }
        public List<HocVien_LopHoc> LayDanhSachHocVienCuaLop(String MaLop)
        {
            var list = (from p in trungtam.HocVien_LopHoc
                        where p.MaLop.Equals(MaLop)
                        select p);
            return list.ToList();
        }
        public HocVien_LopHoc LayHocVienLopHoc(String MaLop, String MaHV)
        {
            var list = (from p in trungtam.HocVien_LopHoc
                        where p.MaLop.Equals(MaLop)
                        &&  p.MaHV.Equals(MaHV)
                        select p);
            return list.First();
        }
        public bool CapNhatHocVienLopHoc(HocVien_LopHoc hocvien_lophoc)
        {
            try
            {
                var list = (from p in trungtam.HocVien_LopHoc
                            where p.MaLop.Equals(hocvien_lophoc.MaLop)
                            && p.MaHV.Equals(hocvien_lophoc.MaHV)
                            select p).First();
                list.Diem1 = hocvien_lophoc.Diem1;
                list.Diem2 = hocvien_lophoc.Diem2;
                list.DongHocPhi = hocvien_lophoc.DongHocPhi;
                trungtam.SaveChanges();
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }
        public bool XoaHocVien(String MaLop,String MaHocVien)
        {
            try
            {
                var hocvien_lophoc = (from p in trungtam.HocVien_LopHoc
                                     where p.MaHV.Equals(MaHocVien)
                                     &&    p.MaLop.Equals(MaLop)
                                     select p).First();
                var lop = from p in trungtam.LopHocs
                          where p.MaLop.Equals(hocvien_lophoc.MaLop)
                          select p;
                lop.First().SiSo = lop.First().SiSo + 1;
                trungtam.DeleteObject(hocvien_lophoc);
                trungtam.SaveChanges();
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }
        public bool ThemHocVien(HocVien_LopHoc hocvien_lophoc)
        {
            try
            {
                var lop = from p in trungtam.LopHocs
                          where p.MaLop.Equals(hocvien_lophoc.MaLop)
                          select p;
                //Kiểm tra sĩ số trong lớp có còn để thêm học viên ko ?
                if (lop.First().SiSo > 0)
                {
                    //Nếu còn chỗ thì thêm học viên đó vào
                    //Giảm sĩ số đi 1
                    lop.First().SiSo = lop.First().SiSo - 1;
                    trungtam.AddToHocVien_LopHoc(hocvien_lophoc);
                    trungtam.SaveChanges();
                    return true;
                }
                else
                {
                    //Ngược lại lớp đã đầy không thể thêm học viên
                    return false;
                }
            }
            catch (Exception ex)
            {
                return false;
            }
        }
    }
}
